package com.MartynovichIgor.KnowledgeTest.questions;


import com.MartynovichIgor.KnowledgeTest.tools.testtools.Parser;

import java.util.ArrayList;

/**
 * Класс создает и возвращает обьект необходимого класса в зависимости от индекса.
 */
public class QuestionFactory {
    private Parser parser;

    public QuestionFactory() {
        this.parser = new Parser();
    }

    /**
     * Метод принимает строку с файла, парсит её и в зависимости от индекса создает обьект
     * необходимого класса.
     * @param questionField
     * @return Обект необходимого класса вопроса.
     */
    public Question getQuestion(String questionField) {
        ArrayList<String> questionFieldsArray = parser.getStringArray(questionField, "@");
        int type = Integer.parseInt(questionFieldsArray.get(0));
        Question question;
        switch (type) {
            case 1:
                question = new Question(questionFieldsArray.get(1),
                        questionFieldsArray.get(2), questionFieldsArray.get(3), Integer.valueOf(questionFieldsArray.get(4)));
                break;
            case 2:
                question = new QuestionWithVariantsAndOneAnswer(questionFieldsArray.get(1),
                        questionFieldsArray.get(2), questionFieldsArray.get(3), Integer.valueOf(questionFieldsArray.get(4)));
                break;
            case 3:
                question = new QuestionWithVariantsAndSeveralAnswers(questionFieldsArray.get(1),
                        questionFieldsArray.get(2), questionFieldsArray.get(3), Integer.valueOf(questionFieldsArray.get(4)));
                break;
            default:
                question = new Question(questionFieldsArray.get(1),
                        questionFieldsArray.get(2), questionFieldsArray.get(3), Integer.valueOf(questionFieldsArray.get(4)));
        }
        return question;
    }


}
